package com.sdry.web.controller.jyy.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

/**
 * @ClassName:    [ReadTxt]   
 * @Description:  [向文件中读写数据测试类]   
 * @Author:       [jyy]   
 * @CreateDate:   [2018年12月24日 上午10:24:19]    
 * @Version:      [v1.0]
 */
public class ReadTxt {
	 public static void main(String args[]) {
	        readFile();
	        writeFile();
	    }

	    /**
	     * 读入TXT文件
	     */
	    public static void readFile() {
	    	String pathname = ReadTxt.class.getClassLoader().getResource("time.properties").getPath();
	        //防止文件建立或读取失败，用catch捕捉错误并打印，也可以throw;
	        //不关闭文件会导致资源的泄露，读写文件都同理
	        //Java7的try-with-resources可以优雅关闭文件，异常时自动关闭文件；详细解读https://stackoverflow.com/a/12665271
	        try (FileReader reader = new FileReader(pathname);
	             BufferedReader br = new BufferedReader(reader) // 建立一个对象，它把文件内容转成计算机能读懂的语言
	        ) {
	            String line;
	            //网友推荐更加简洁的写法
	            while ((line = br.readLine()) != null) {
	                // 一次读入一行数据
	                System.out.println(line);
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }

	    /**
	     * 写入TXT文件
	     */
	    public static void writeFile() {
	    	String path = ReadTxt.class.getClassLoader().getResource("time.properties").getPath();
	        try {
	            File writeName = new File(path); // 相对路径，如果没有则要建立一个新的output.txt文件
	            writeName.createNewFile(); // 创建新文件,有同名的文件的话直接覆盖
	            try (FileWriter writer = new FileWriter(writeName);
	                 BufferedWriter out = new BufferedWriter(writer)
	            ) {
	                out.write("我会写入文件啦1\r\n"); // \r\n即为换行
	                out.write("我会写入文件啦2\r\n"); // \r\n即为换行
	                out.flush(); // 把缓存区内容压入文件
	            }
	        } catch (IOException e) {
	            e.printStackTrace();
	        }
	    }

}
